package laboratorioV.grupo21.tp4.ejercicios;

import laboratorioV.grupo21.tp4.clientes.Cliente;
import laboratorioV.grupo21.tp4.deposito.Deposito;
import laboratorioV.grupo21.tp4.productos.Producto;

public class Punto0MultiT implements Runnable {
	Cliente cliente;
	Producto producto;
	Deposito deposito;
	Integer cantidad;
	
	public Punto0MultiT(Deposito pDeposito, Cliente pCliente, Producto pProducto, Integer pCantidad) {
		cliente = pCliente;
		producto = pProducto;
		cantidad = pCantidad;
		deposito = pDeposito;
	}

	@Override
	public void run() {
		guardar();
	}
	
	private void guardar(){
		StringBuffer strMensaje = new StringBuffer();
		
		
		Integer cantidadRestante = cantidad;		
		
		
		strMensaje.append("\n*********************************************************");
		strMensaje.append("\n*       CARGAR STOCK PARA UN PRODUCTO DE UN CLIENTE     *");
		strMensaje.append("\n*********************************************************\n");
		strMensaje.append(cantidadRestante + " " + producto.getDescripcion() + " del cliente " + cliente.getApellido() + " seran almacenados en el deposito");
	
		//System.out.println(strMensaje.toString());
		
		/*
		 * RECORRE TODO EL DEPOSITO, Y AGREGA EL STOCK QUE PUEDA(SEGUN LA CANTIDAD DE ESPACIOS LIBRES)
		 * EN CADA COMPARTIMENTO.
		 * RETORNA LA CANTIDAD DE PRODUCTOS QUE NO SE PUDO AGREGAR.
		 */
		//Busca (en compartimentos existentes) si hay espacio y es el mismo tipo
		cantidadRestante = deposito.addStock(cliente, producto, cantidadRestante);
		
		//SI QUEDO STOCK SIN GUARDAR, CREA UN NUEVO COMPARTIMENTO PARA ESE PRODUCTO
		if(cantidadRestante > 0)
			try {
				cantidadRestante = deposito.nuevoCompartimento(cliente, producto, cantidadRestante);
			} catch (Exception e) {
				System.out.println("\n" + cantidadRestante + " productos del tipo " + producto.getDescripcion() + " no pudieron ser guardados en el deposito debido a un ERROR");				
			}
		
		if(cantidadRestante > 0)
				System.out.println("\n" + cantidadRestante + " productos no se pudieron almacenar al stock!!!!");
			
		
		
	}
}
